package com.xxgc.demo.utils;

import cn.hutool.extra.mail.MailUtil;
import lombok.Data;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**
 * @Author: Sjy
 * @Date :2023/10/16 - 10 - 16 - 9:28
 * 给研发和运维发邮件工具类
 */
@Component
@Data
public class SendEmailToDevOpsUtil {
    /**
     * 给开发或运维人员发送邮件
     */
    //运维人员的
    @Value("${system.ops-info}")
    private String userOpsEmail[];
    //开发人员
    @Value("${system.dev-info}")
    private String userDevEmail[];
    //当前系统环境
    @Value("${spring.profiles.active}")
    private String active;
    //系统名
    @Value("${spring.application.name}")
    private String systemName;

    /**
     * 发邮件
     * @param level 异常等级 1-5级 1级最严重
     * @param message 错误信息
     * @param e 异常对象
     */
    @SneakyThrows
    public void sendEmailToDevOps(int level, String message, Exception e, boolean isSendDev){
        //如果不是生产环境就不需要发送代码
        if(!"prod".equals(active)){
            return;
        }
        String title = systemName+"系统（"+level+"级）异常（"+ LocalDateTime.now() +"）";
        String content = "同学您好，系统发生异常，请及时处理</br>" + message +
                "</br>详细错误信息：</br>" + e.getMessage();

        //3 - 5级异常存入redis 由 quartz每天上午9点上班时发送

        for (String s : userOpsEmail) {
            //给运维人员发信息
            MailUtil.send(s,title,content, true);
            Thread.sleep(1000);
        }
        if(isSendDev){//再给研发发错误信息
            for (String s : userDevEmail) {
                MailUtil.send(s,title,content, true);
                Thread.sleep(1000);
            }
        }

    }
}
